<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<style type="text/css">
	body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
	#allmap {position: relative;}
	#tools {position: absolute;left:0;top:0;z-index: 1000;}
	</style>
	<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb"></script>
	<!-- 
	# 轨迹动画
	JSAPI GL在视角动画的基础上，封装了轨迹动画开源库，可以实现在轨迹动态播放的同时，视角跟随移动。
	
	 -->
	<!-- 
	## 1.引入开源库文件

	轨迹动画依赖开源库BMapGLLib.TrackAnimation，因此需要在引入JSAPI GL版的基础上，在页面当中引用轨迹动画开源库静态JS文件。
	JSAPI 开源库是运行在JSAPI基础上的静态库，其提供了一些开发者常用的非核心功能，代码开源，开发者可以根据自己的需求下载、二次开发使用。
	 -->
	<script type="text/javascript" src="https://api.map.baidu.com/library/TrackAnimation/src/TrackAnimation_min.js"></script>
	<title>地图展示</title>
</head>
<body>
	<div id="allmap"></div>
	<div id="tools">
		<button id="start">播放动画</button>
		<button id="end">停止播放</button>
	</div>
</body>
</html>
<script type="text/javascript">
	/*
	## 2.创建基本地图
	*/
  	var bmap = new BMapGL.Map("allmap");                          // 创建Map实例
	bmap.centerAndZoom(new BMapGL.Point(116.297611, 40.047363), 17);    // 初始化地图，设置中心点坐标和地图级别
	bmap.enableScrollWheelZoom(true);                             // 开启鼠标滚轮缩放

	/*

	## 3.自定义一个折线轨迹
	声明一个Polyline对象，不需要调用Map.addOverlay()添加到地图中，创建对象即可。
	*/
	var path = [
		{
			'lng': 116.297611,
			'lat': 40.047363
		}, 
		{
			'lng': 116.302839,
			'lat': 40.048219
		}, 
		{
			'lng': 116.308301,
			'lat': 40.050566
		},
		{
			'lng': 116.305732,
			'lat': 40.054957
		}, 
		{
			'lng': 116.304754,
			'lat': 40.057953
		}, 
		{
			'lng': 116.306487,
			'lat': 40.058312
		}, 
		{
			'lng': 116.307223,
			'lat': 40.056379
		}
	];

	var point = [];
	for (var i = 0; i < path.length; i++) {
		point.push(new BMapGL.Point(path[i].lng, path[i].lat));
	}
	var pl = new BMapGL.Polyline(point);

	/*
	## 4.创建个轨迹动画对象，并配置参数

	轨迹动画的构造参数接受3个参数。参数1为当前地图对象；参数2为折线对象；参数3为配置对象，详情可以参考下文的类参考。
	*/
	var trackAni = new BMapGLLib.TrackAnimation(bmap, pl, {
		overallView: true, // 动画完成后自动调整视野到总览
		tilt: 30,          // 轨迹播放的角度，默认为55
		duration: 20000,   // 动画持续时长，默认为10000，单位ms
		delay: 3000        // 动画开始的延迟，默认0，单位ms
	});

	/*
	## 5.启动动画
	为了保证效果，建议地图渲染完成后，再由其他方式触发动画播放。
	*/
	document.getElementById('start').addEventListener('click', function() {
		trackAni.start();
	});
	/*
	## 6.强制停止动画
	动画播放过程中，可以调用方法停止取消。
	*/
	document.getElementById('end').addEventListener('click', function() {
		trackAni.cancel();         // 强制停止动画
	});
</script>
